package com.example.server.web.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.server.web.domain.RespBean;
import com.example.server.web.domain.Role;
import com.example.server.web.domain.SysUser;
import com.example.server.web.domain.page.PageQueryDto;
import com.example.server.web.domain.dto.SysUserDto;
import com.example.server.web.domain.dto.UserLoginParam;

import java.util.List;
import java.util.Map;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author 作者
 * @since 2023-04-04
 */
public interface SysUserService extends IService<SysUser> {

    /**
     * 登录
     * @param userLoginParam User登录对象
     * @return
     */
    RespBean login(UserLoginParam userLoginParam);

    /**
     * 根据用户名获得用户信息
     * @param userName 用户账号（学号）
     * @return
     */
    SysUser getUserByUserName(String userName);

    /**
     * 根据id查询用户的角色
     * @param userId
     * @return
     */
    List<Role> getRolesByUserId(Long userId);


    /**
     * 分页查询所有用户
     *
     */
    Map getUsersPage(PageQueryDto pageQueryDto);


    /**
     * 根据用户id查找
     *
     */
    SysUser getUserById(Long userId);

    /**
     * 分页查找包含指定角色的用户列表
     *
     */
    Page<SysUser> getUsersByRole(PageQueryDto pageQueryDto);

    /**
     * 增加用户
     *
     */
    Integer insertUser(SysUserDto sysUserDto);

    /**
     * 修改用户
     * @Param isVailPass 是否要校验密码被修改
     */
    Integer updateUser(SysUserDto sysUserDto,Boolean isVailPass);

    /**
     * 删除用户
     *
     */
    Integer deleteUser(Long userId);


    /**
     * 批量删除用户
     *
     */
    Integer deleteUsers(List<Long> userIdList);


    /**
     * 更新用户头像
     *
     */
    String uploadPhoto(Long userId,String fileName);

    /**
     * 初始化用户密码
     * @param id
     * @return
     */
    boolean initPassword(Long id);
}
